  //
//  MainViewController.swift
//  CYMWeiBo
//
//  Created by mac on 15/12/12.
//  Copyright © 2015年 IT 小码农. All rights reserved.
//

import UIKit

class MainViewController: UITabBarController {
    
    //必选属性
    let mainTabBar = MainTabBar()
    
    //MARK 加号按钮的点击事件
    //private func 是 Swift 中函数的特殊的声明形式 希望 Swift 方法选择器+访问控制关键字 能够兼容 需要使用@ objc
    //@objc private 要保证监听方法的安全型 并且可以响应点击事件的特殊写法
  @objc private func composeBtnDidClick () {
//    print(__FUNCTION__)
    }
    
    
    override func viewDidLoad() {
        super.viewDidLoad()

        //tabBar 是只读属性,使用 KVC 在运行时 间接赋值
//        print(tabBar.classForCoder)//打印的是 UITabBar
        
        //添加加号按钮的点击事件
        mainTabBar.composeBtn.addTarget(self, action: "composeBtnDidClick", forControlEvents: .TouchUpInside)
        
        
        setValue(mainTabBar, forKey: "tabBar")
        
        //classForCoder对象的类的字符串形式
//        print(tabBar.classForCoder)//打印的是MainTabBar
        
        //添加子视图控制器
        addChildViewControllers()
        
    }
    
    //private 私人的,表示只能在本类中进行访问
    /**
    添加子视图控制器
    */
    private func addChildViewControllers() {
       
        
        //调用方法,设置控制器  -----------要加() 进行初始化
        addChildViewController(HomeTableViewController(), title: "首页", imageName:"tabbar_home")
        
        addChildViewController(MessessTableViewController(), title: "消息", imageName: "tabbar_message_center")
        
        addChildViewController(DiscoverTableViewController(), title: "发现", imageName: "tabbar_discover")
        
        addChildViewController(ProfileTableViewController(), title: "我", imageName: "tabbar_profile")
       
    }
    
    /**
    把设置 tabBar 抽取成方法
    - parameter vc:        控制器
    - parameter title:     标题
    - parameter imageName: 图片名称
    */
    private func addChildViewController(vc: UIViewController,title: String,imageName: String) {
    
        
        
        //2.把 tableVIewController 设置为导航控制器的根控制器
        let nav = UINavigationController(rootViewController: vc)
        
        //3.设置标题
        vc.title = title
        
        //4.设置图片
        vc.tabBarItem.image = UIImage(named: imageName)
        
        //5.调用方法,把导航控制器添加到导航条中  self 可以省略
        addChildViewController(nav)
    }
    
}
